package tree

import "fmt"

//为结构定义方法, treeNode为接收者,相当于 java 中的 this
func (node Node) Print() {
	fmt.Println(node.Value)
}

//为结构定义方法
func (node Node) SetValue(value int) {
	node.Value = value
}

//只有使用指针才能改变结构的内容
//go 语言中的 nil 也可以调用方法,不会空指针
func (node *Node) SetValueByPoint(value int) {
	node.Value = value
}

//使用工厂函数
func CreateNode(value int) *Node {
	//返回局部变量的地址
	return &Node{Value: value}
}

func (node *Node) Traverse() {
	if node == nil {
		return
	}

	node.Left.Traverse()
	node.Print()
	node.Right.Traverse()
}
